iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Software Development

剛入職軟體工程師會需要知道的常見工具篇系列 第 10

[Day10] 簡單搞懂GraphQl API 名詞解釋 & Python 實作範例2

  • 分享至 

  • xImage
  •  

今天想多講一些名詞解釋相關,還有python的範例喔~

  1. Query
    • 定義Client端可以對數據進行查詢動作(即讀取操作)
@strawberry.type
class Query:
    users: User = strawberry.field(resolver=get_users, description="用戶資訊")
    drinks: typing.List[Drink] = strawberry.field(resolver=get_drinks, description="飲料資訊")
  1. Mutation (即寫入模式)
    • 這邊接受兩個參數UserID & IsLogin 並回傳新資料回去
@strawberry.type
class Mutation:
    @strawberry.mutation
    def add_user(self, UserID: str, IsLogin: bool) -> Optional[User]:
        try:
            store_users(UserID=UserID, IsLogin=IsLogin)
            return User(UserID=UserID, IsLogin=IsLogin, Created_at=datetime.now())
        except :
            raise Exception("Can't insert new user")
  1. Resolvers
    • 負責去對應到資料,像是我們去query drinks 或是 users 時 Resolver function 就是對應Schema設定好的架構底下的資料
## model.py
from pydantic import BaseModel, Field
class ProductBase(BaseModel):
    
    owner_id: str = Field(title='保管人')
    owner_dept: str = Field(title='保管部門')
    asset_id: str = Field(title='資產編號')
  • strawberry 有支援
    • 可以接收Pydantic 模型並包裝,strawberry.auto就可以繼承來使用
    • 繼承所有參數 all_fields=True
import strawberry
from .models import ProductBase

## 繼承指定參數
@strawberry.experimental.pydantic.type(model=ProductBase)
class ProductType:
    owner_id: strawberry.auto
    owner_dept: strawberry.auto
   
## 繼承所有參數
@strawberry.experimental.pydantic.type(model=ProductBase, all_fields=True)
class ProductType:
    pass

資料參考

  1. strawberry 官方文件

上一篇
[Day9] 簡單搞懂GraphQl API Python 實作範例
下一篇
[Day11] 簡單搞懂Rest & GraphQL 差異
系列文
剛入職軟體工程師會需要知道的常見工具篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言